Hasura(cloud)のGraphQLエンジンからBigQueryを繋いで参照してみる
HasuraではGoogleのBigQueryに接続し、データベーススキーマに基づいてGraphQLAPIを構築していくことが可能になっています。
現状、BigQueryとの接続でサポートされているのはQUERYのみのようです。
やってみる
前提
まずはHasura Cloudでアカウントを作成しておく必要があります。
BigQueryでは
- gcpのプロジェクトID
- graphqlで公開できるデータセット
- プロジェクトを照会するためのサービスアカウント
が必要です。
接続を作成
Hasura Cloudにログインし、Data->Data Manager->Connect Existing Database
のページで設定を行なっていきます。
Database Display Name
- 接続の名前を入力
Data Source Driver
- 接続するデータベースの種類を選択します。
- 今回であれば
BigQuery(beta)
にします
Connect Database Via
- データベースに接続するための情報を入力します。
- BigQueryでの接続にはサービスアカウントが必要になってきます
- JSON形式のキーをGCPからダウンロードできます
Connection Parameters
にサービスアカウントキーの中身を直接入力するか、Environment Variable
でHasuraのプロジェクトに設定できる環境変数を指定できます- 環境変数:
- JSON形式のキーをGCPからダウンロードできます
Project Id
- GCPのプロジェクトIDを入力します
Datasets
- Hasuraと連携するBigQueryのデータセットを入力します。カンマ区切りで複数のデータセットを指定できます
Global Select Limit
- 返される最大行数を指定します(default 1000)
入力後、Connect Database
ボタンを押して作成します
テーブルの追跡を設定
データセットとの接続が完了後、作成した接続の詳細ページに遷移します。
Untracked tables or views
の箇所にテーブル一覧が表示されます
Track
を押すことでGraphQL APIで公開できるようになります。
公開すると、コンソール上からもデータを参照できるようになります。
HasuraのGraphQLエンジンはBiggQueryのテーブル/ビューに基づいてGraphQLスキーマとリゾルバーを自動的に生成します。 GraphQLスキーマやリゾルバーを作成する必要はありません。
別のテーブルとのリレーションシップの作成も可能です。
GraphQLクエリを実行してみる
コンソールのAPI->GraphiQL
のページで実行してみます。
公開したテーブルに対してクエリを実行することができるようになりました。
リレーションシップ構築後のクエリも無事に実行可能です。
GraphQLクエリを実行したときに、BigQuery側でどのようなクエリが実行されたのかをCloud Logging
で参照することができるので、実際に見てみると良いと思います。